Dalam praktikum MAP II (Analitika Perkotaan) perangkat lunak yang digunakan adalah R dan RStudio. R merupakan bahasa pemrograman yang terkenal dan software open-source yang gratis, digunakan untuk analisis statistik dan data. Ini memiliki kemampuan yang sangat baik dalam komputasi statistik tingkat tinggi. Dengan lebih dari 18.000 paket data science tersedia (sampai September 2022), termasuk yang bersifat umum dan yang spesifik, R didukung oleh sebuah komunitas online yang sangat aktif dan suportif serta dapat beroperasi di berbagai sistem operasi. RStudio merupakan alat esensial bagi siapa saja yang menggunakan bahasa pemrograman R dalam pekerjaannya. Ini membantu dalam proses analisis data, mulai dari impor dan akses data, transformasi, eksplorasi, pembuatan plot, hingga pemodelan data, serta digunakan dalam pembelajaran mesin untuk melakukan prediksi berdasarkan data tersebut.
Secara sederhana, R seperti mesin mobil, sedangkan RStudio seperti dasbor mobil seperti yang diilustrasikan pada gambar di bawah.
Lebih tepatnya, R adalah bahasa pemrograman yang menjalankan komputasi, sedangkan RStudio adalah integrated development environment (IDE) yang menyediakan antarmuka dengan menambahkan banyak fitur dan alat yang nyaman. Jadi, seperti halnya memiliki akses ke speedometer, kaca spion, dan sistem navigasi yang membuat mengemudi jauh lebih mudah, menggunakan antarmuka RStudio juga membuat penggunaan R jauh lebih mudah.
Buka aplikasi RStudio yang akan otomatis juga menjalankan software atau kernel R. Berikut adalah tampilan aplikasinya.
Secara umum, halaman ini bisa dibagi menjadi 3 bagian utama:
Left-area: Tabs Console, Terminal, dan Background Jobs
Top-right area: Tabs Environment, History, Connections, dan Tutorial
Bottom-right area: Tabs Files, Plots, Packages, Help, Viewer, and Presentation
Memulai project baru penting untuk mengorganisasi file dan data yang digunakan seperti R script, plot, gambar, dan lain-lain.
Buat proyek baru dengan membuka Filetab di RStudio dan
pilih New Project.... Kemudian tentukan apakah Anda ingin
membuat proyek di direktori baru, atau di direktori yang sudah ada. Di
sini kita pilih New Directory:
terdapat beberapa pilihan tipe project yang dapat dibuat. dalam kasus ini kita memilih New Project
Selanjutnya, kita beri nama pada proyek kita. Create project as a subdirectory of: menunjukkan lokasi folder tersebut di komputer. Jika kita setuju dengan lokasi tersebut, pilih Create Project, jika tidak, pilih Browse dan pilih lokasi di komputer tempat folder proyek ini akan berada. Dalam kasus ini, silakan simpan folder directory sesuai dengan cara masing-masing dalam mengatur folder praktikum. misal:
D:/Semester 3/SWK/Praktikum 0
sangat disarankan untuk memisahkan folder setiap praktikum agar memudahkan mengerjakan dan menemukan data praktikum pada praktikum-praktikum selanjutnya.
Sekarang di RStudio kita melihat nama proyek tertera di pojok kanan atas layar. Kita juga melihat file .Rproj di tab Files. File apa pun yang kita tambahkan atau buat di dalam proyek ini akan muncul di tab Files.
Kalian dapat menutup project pada menu file - Close Project
Pada tab ini, kita bisa melihat informasi mengenai versi R yang digunakan dan juga beberapa perintah dasar yang dapat dicoba. Pada akhir deskripsi tersebut, kita dapat mengetikkan kode R kita, tekan Enter, dan dapatkan hasilnya di bawah baris kode (misalnya, coba jalankan 2*2 dan lihat apa yang terjadi). Dengan console ini kita bisa melakukan apa saja yang kita lakukan di program R lainnya, misalnya:
Install dan load R Packages (baca lebih lanjut terkait R Packages Tutorial: How to Download & Install R Packages | DataCamp)
Melakukan operasi matematika sederhana atau kompleks
Menetapkan hasil operasi ke sebuah variabel
Mengimpor data
Membuat jenis objek R yang umum, seperti vektor, matriks, atau bingkai data
Mengeksplorasi data
Analisis statistik
Membangun visualisasi data
Namun, ketika kita menjalankan kode secara langsung di console, kode tersebut tidak disimpan untuk direproduksi lebih lanjut. Jika kita perlu (dan biasanya memang perlu) menulis kode yang dapat direproduksi untuk menyelesaikan tugas tertentu, kita harus mencatat dan menyimpannya secara teratur dalam script file, bukan di console.
Kita akan segera menjelajahi cara menulis script file. Untuk saat ini, mari kita ingat bahwa Anda sebaiknya menggunakan console untuk menguji kode dan menginstal paket-paket R karena paket-paket tersebut hanya perlu diinstal satu kali.
Setiap kali kita mendefinisikan variabel baru atau menetapkan ulang variabel yang sudah ada di RStudio, variabel tersebut akan disimpan sebagai objek di workspace dan ditampilkan, bersama dengan nilainya, di tab Environment di area kanan atas jendela RStudio. Coba jalankan : greeting <- “Hello World!” di console dan lihat apa yang terjadi pada tab Environment.
Hal ini juga berkaitan dengan objek yang lebih kompleks seperti dataframe. Ketika kita mengimpor data sebagai dataframe (atau membuat dataframe dari awal), kita melihat di workspace tidak hanya nama objek baru tetapi juga nilai dan tipe data dari setiap kolom. Selain itu, kita dapat menampilkan lebih banyak detail tentang setiap objek, seperti panjang dan ukuran memorinya.
Pada contoh di bawah ini, kita membuat dua variabel di konsol:
greeting <- "Hello, World!"
my_vector <- c(1, 2, 3, 4)
Perhatikan bagaimana variabel-variabel tersebut ditampilkan pada tab Environment:
Kita dapat mengubah cara menampilkan variabel kita dari
List ke Grid di sudut kanan atas tab.
Perhatikan, bahwa sekarang kita juga bisa melihat panjang dan ukuran
setiap objek.
Dalam mode tampilan Grid, kotak akan muncul di sebelah
kiri setiap variabel. Kita dapat mencentang salah satu kotak tersebut
dan mengklik ikon Broom (sapu berwarna coklat) untuk
menghapus objek yang sesuai dari workspace. Jika kita mencentang kotak
di sebelah kiri kolom Name dan mengklik ikon
Broom, atau jika kita hanya mengklik ikon ini pada mode
tampilan sebelumnya (List), kita akan membersihkan workspace kita dan
menghapus semua variabel darinya.
Tabs penting lainnya
Terminal - untuk menjalankan perintah dari terminal
History - untuk melacak riwayat semua operasi yang dilakukan selama sesi RStudio saat ini
Files - untuk melihat struktur folder kerja, mengatur ulang folder kerja, menavigasi antar folder, dll.
Plots - untuk melihat pratinjau dan mengekspor visualisasi data yang dibuat
Packages- untuk memeriksa package apa saja yang dimuat dan memuat atau membongkar package (dengan menyalakan/mematikan kotak di sebelah kiri nama package)
Selanjutnya, kita akan membahas tindakan apa saja yang bisa kita lakukan di RStudio untuk tujuan analisis data. Sebenarnya, semua operasi yang akan kita bahas tidak hanya terkait dengan RStudio, tetapi lebih pada penggunaan R secara umum, dalam IDE apa pun.
Oleh karena itu, kita tidak akan membahas secara rinci semua detail teknis dari operasi-operasi tersebut. Sebaliknya, kita akan melihat beberapa tugas umum, implementasi praktisnya di R (contoh kode), dan pendekatan alternatif (jika ada) untuk tugas-tugas tersebut di RStudio.
Salin-tempel contoh-contoh di bawah ini ke dalam console RStudio dan jelajahi hasilnya. Pertimbangkan untuk mencoba pendekatan umum dan alternatif (khusus RStudio).
Syntax:
install.packages("package_name")
Contoh:
install.packages("tidyverse")
Di RStudio:
Ingatlah untuk menginstal semua package di console, bukan di script file, karena paket-paket tersebut hanya perlu diinstal di hard disk komputer satu kali saja.
Anda dapat menginstal package langsung dari interface RStudio: buka tab Packages (bagian kiri bawah), klik Install dan pilih package yang diperlukan dari CRAN yang dipisahkan dengan spasi atau koma, seperti berikut:
Syntax:
library(package_name)
Contoh:
library(tidyverse)
Perhatikan bahwa tanda kutip tidak digunakan untuk memuat package.
Di RStudio:
Muat semua package yang diperlukan dalam script file, bukan di console.
Memuat/membongkar package terinstal atau package sistem dapat dilakukan dengan mencari dan mencentang/menghapus centang package-package tersebut pada tab Package. Perhatikan bahwa beberapa package tidak dapat dibongkar jika diimpor oleh package lain.
Jalankan di konsol search() untuk mendapatkan daftar
semua paket yang dimuat.
Di RStudio: buka tab Packages, cari paket tertentu, dan cek centang kotak di sebelah kiri nama package.
Untuk mendapatkan “help” atau semacam dokumentasi pada paket yang terinstal dan dimuat, atau fungsi dari paket yang terinstal dan dimuat, atau objek R bawaan lainnya (seperti kumpulan data yang telah dimuat sebelumnya), gunakan salah satu dari sintaks berikut:
help(package_or_function_name)
atau
help("package_or_function_name")
atau
?package_or_function_name
Catatan: kita perlu memasukkan nama fungsi ke fungsi bantuan tanpa tanda kurung.
Tab Help akan dibuka dengan dokumentasi package atau objek. Jika kita membuka sebuah package, maka kita akan mendapatkan daftar semua fungsi dan tautan ke dokumentasi untuk masing-masing fungsi.
Sebagai contoh, jalankan perintah berikut ini pada konsol (setelah memastikan bahwa paket readr dan dplyr telah terinstal dan dimuat):
help("read.csv")
?readr
help(help)
help('CO2')
Di RStudio: cari dan klik nama paket yang diinginkan (meskipun tidak dimuat) pada tab Packages dan lihat hasilnya pada tab Help.
Contoh:
world_population <- read.csv("world_population.csv")
(Untuk menjalankan kode di atas, pertama-tama, unduh Dataset Populasi Dunia yang tersedia untuk umum dari Kaggle dan ekstrak ke dalam folder yang sama dengan tempat Anda menyimpan R project).
Hasil dari menjalankan kode di atas akan menjadi sebuah dataframe R dalam folder kerja Anda.
Di RStudio:
atau
Klik Import Dataset pada tab Environment:
Kemudian pilih From Text (base), navigasikan ke folder yang tepat, pilih file yang akan diimpor, isi atau centang bidang Name, Heading, Separator, dan Decimal pada pop-up window, preview dataset, dan klik Import:
Kalian sekarang dapat menemukan dan menjelajahi set data yang diimpor di tab Environment dan di spreadsheet yang dibuka di tab baru:
Untuk melihat daftar lengkap dataset sampel yang tersedia yang dimuat sebelumnya di R, termasuk nama dan deskripsi singkatnya, jalankan kode berikut ini di console:
data()
Anda dapat mengambil salah satu nama yang muncul dan menggunakan masing-masing nama tersebut sebagai variabel (berisi sebuah dataframe) untuk bekerja dan melatih kemampuan Anda dalam R.
Jika Anda membutuhkan informasi lebih lanjut tentang dataset yang telah
dimuat sebelumnya, jalankan fungsi help() pada dataset
tersebut, misalnya,help(CO2).
Seperti pada IDE R lainnya, di RStudio, kita dapat mengakses, memanipulasi, mentransformasi, menganalisis, dan memodelkan data dalam R. Di bawah ini adalah beberapa contoh operasi standar yang dilakukan pada dataset bawaan CO2 :
#menampilkan 15 row pertama
head(CO2,15)
## Plant Type Treatment conc uptake
## 1 Qn1 Quebec nonchilled 95 16.0
## 2 Qn1 Quebec nonchilled 175 30.4
## 3 Qn1 Quebec nonchilled 250 34.8
## 4 Qn1 Quebec nonchilled 350 37.2
## 5 Qn1 Quebec nonchilled 500 35.3
## 6 Qn1 Quebec nonchilled 675 39.2
## 7 Qn1 Quebec nonchilled 1000 39.7
## 8 Qn2 Quebec nonchilled 95 13.6
## 9 Qn2 Quebec nonchilled 175 27.3
## 10 Qn2 Quebec nonchilled 250 37.1
## 11 Qn2 Quebec nonchilled 350 41.8
## 12 Qn2 Quebec nonchilled 500 40.6
## 13 Qn2 Quebec nonchilled 675 41.4
## 14 Qn2 Quebec nonchilled 1000 44.3
## 15 Qn3 Quebec nonchilled 95 16.2
#menampilkan 10 row terakhir
tail(CO2,10)
## Plant Type Treatment conc uptake
## 75 Mc2 Mississippi chilled 500 12.5
## 76 Mc2 Mississippi chilled 675 13.7
## 77 Mc2 Mississippi chilled 1000 14.4
## 78 Mc3 Mississippi chilled 95 10.6
## 79 Mc3 Mississippi chilled 175 18.0
## 80 Mc3 Mississippi chilled 250 17.9
## 81 Mc3 Mississippi chilled 350 17.9
## 82 Mc3 Mississippi chilled 500 17.9
## 83 Mc3 Mississippi chilled 675 18.9
## 84 Mc3 Mississippi chilled 1000 19.9
#menampilkan nama kolom
colnames(CO2)
## [1] "Plant" "Type" "Treatment" "conc" "uptake"
#melihat jumlah row dan kolom
dim(CO2)
## [1] 84 5
#menampilkan struktur data
str(CO2)
## Classes 'nfnGroupedData', 'nfGroupedData', 'groupedData' and 'data.frame': 84 obs. of 5 variables:
## $ Plant : Ord.factor w/ 12 levels "Qn1"<"Qn2"<"Qn3"<..: 1 1 1 1 1 1 1 2 2 2 ...
## $ Type : Factor w/ 2 levels "Quebec","Mississippi": 1 1 1 1 1 1 1 1 1 1 ...
## $ Treatment: Factor w/ 2 levels "nonchilled","chilled": 1 1 1 1 1 1 1 1 1 1 ...
## $ conc : num 95 175 250 350 500 675 1000 95 175 250 ...
## $ uptake : num 16 30.4 34.8 37.2 35.3 39.2 39.7 13.6 27.3 37.1 ...
## - attr(*, "formula")=Class 'formula' language uptake ~ conc | Plant
## .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
## - attr(*, "outer")=Class 'formula' language ~Treatment * Type
## .. ..- attr(*, ".Environment")=<environment: R_EmptyEnv>
## - attr(*, "labels")=List of 2
## ..$ x: chr "Ambient carbon dioxide concentration"
## ..$ y: chr "CO2 uptake rate"
## - attr(*, "units")=List of 2
## ..$ x: chr "(uL/L)"
## ..$ y: chr "(umol/m^2 s)"
#statistik summary CO2 untuk setiap kolom
summary(CO2)
## Plant Type Treatment conc uptake
## Qn1 : 7 Quebec :42 nonchilled:42 Min. : 95 Min. : 7.70
## Qn2 : 7 Mississippi:42 chilled :42 1st Qu.: 175 1st Qu.:17.90
## Qn3 : 7 Median : 350 Median :28.30
## Qc1 : 7 Mean : 435 Mean :27.21
## Qc3 : 7 3rd Qu.: 675 3rd Qu.:37.12
## Qc2 : 7 Max. :1000 Max. :45.50
## (Other):42
#statisic summary kolom/variabel uptake
summary(CO2$uptake)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.70 17.90 28.30 27.21 37.12 45.50
#median variabel uptake
median(CO2$uptake)
## [1] 28.3
#menampilkan kelas data variabel uptake
class(CO2$uptake)
## [1] "numeric"
#melihat nilai unik dari variabel treatment
unique(CO2$Treatment)
## [1] nonchilled chilled
## Levels: nonchilled chilled
#menampilkan subset row/beberapa row dengan nilai conc paling kecil
subset(CO2, conc == min(CO2$conc))
## Plant Type Treatment conc uptake
## 1 Qn1 Quebec nonchilled 95 16.0
## 8 Qn2 Quebec nonchilled 95 13.6
## 15 Qn3 Quebec nonchilled 95 16.2
## 22 Qc1 Quebec chilled 95 14.2
## 29 Qc2 Quebec chilled 95 9.3
## 36 Qc3 Quebec chilled 95 15.1
## 43 Mn1 Mississippi nonchilled 95 10.6
## 50 Mn2 Mississippi nonchilled 95 12.0
## 57 Mn3 Mississippi nonchilled 95 11.3
## 64 Mc1 Mississippi chilled 95 10.5
## 71 Mc2 Mississippi chilled 95 7.7
## 78 Mc3 Mississippi chilled 95 10.6
Coba jalankan satu per satu di RStudio dan amati hasilnya.
*asisten dapat mencontohkan beberapa dari code di atas saat praktikum
Seperti pada IDE R lainnya, di RStudio, kita dapat memplot data. Di
bawah ini adalah beberapa contoh pembuatan plot sederhana untuk dataset
bawaan CO2 dan Orange . Pada kedua kasus tersebut, plot yang dihasilkan
muncul pada tab Plots dan dapat diekspor menggunakan
tombol Export pada tab tersebut:
Membuat histogram
hist(CO2$uptake)
Membuat scatter plot
plot(Orange$age, Orange$circumference)
Kita dapat menyetel beberapa parameter yang tersedia untuk fungsi plot() dasar untuk menambahkan beberapa estetika pada plot terakhir:
plot(Orange$age, Orange$circumference,
xlab="Age", ylab="Circumference",
main="Circumference vs. Age",
col="blue", pch=16)
Sekali lagi, dalam hal ini, RStudio tidak berbeda dengan IDE R lainnya.
Untuk membuat vektor:
oceans <- c("Arctic", "Atlantic", "Indian", "Pacific", "Southern")
avg_depth <- c(1.2, 3.65, 3.74, 3.97, 3.27)
Untuk membuat dataframe:
oceans_depth <- data.frame(oceans, avg_depth)
Print out hasil:
print(oceans_depth)
Vektor dan bingkai data yang dihasilkan, juga muncul pada tab Environment di RStudio:
Beberapa data statistik mungkin memiliki row/variabel dengan missing data. Berikut merupakan langkah yang dapat dilakukan ketika harus mengolah dataset yang memiliki missing value. Dalam kasus ini kita akan memakai dataset airquality
data(airquality)
head(airquality)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
missing value ditunjukkan dengan nilai N/A pada row
mengecek dan menghitung missing value
is.na(airquality)
## Ozone Solar.R Wind Temp Month Day
## [1,] FALSE FALSE FALSE FALSE FALSE FALSE
## [2,] FALSE FALSE FALSE FALSE FALSE FALSE
## [3,] FALSE FALSE FALSE FALSE FALSE FALSE
## [4,] FALSE FALSE FALSE FALSE FALSE FALSE
## [5,] TRUE TRUE FALSE FALSE FALSE FALSE
## [6,] FALSE TRUE FALSE FALSE FALSE FALSE
## [7,] FALSE FALSE FALSE FALSE FALSE FALSE
## [8,] FALSE FALSE FALSE FALSE FALSE FALSE
## [9,] FALSE FALSE FALSE FALSE FALSE FALSE
## [10,] TRUE FALSE FALSE FALSE FALSE FALSE
## [11,] FALSE TRUE FALSE FALSE FALSE FALSE
## [12,] FALSE FALSE FALSE FALSE FALSE FALSE
## [13,] FALSE FALSE FALSE FALSE FALSE FALSE
## [14,] FALSE FALSE FALSE FALSE FALSE FALSE
## [15,] FALSE FALSE FALSE FALSE FALSE FALSE
## [16,] FALSE FALSE FALSE FALSE FALSE FALSE
## [17,] FALSE FALSE FALSE FALSE FALSE FALSE
## [18,] FALSE FALSE FALSE FALSE FALSE FALSE
## [19,] FALSE FALSE FALSE FALSE FALSE FALSE
## [20,] FALSE FALSE FALSE FALSE FALSE FALSE
## [21,] FALSE FALSE FALSE FALSE FALSE FALSE
## [22,] FALSE FALSE FALSE FALSE FALSE FALSE
## [23,] FALSE FALSE FALSE FALSE FALSE FALSE
## [24,] FALSE FALSE FALSE FALSE FALSE FALSE
## [25,] TRUE FALSE FALSE FALSE FALSE FALSE
## [26,] TRUE FALSE FALSE FALSE FALSE FALSE
## [27,] TRUE TRUE FALSE FALSE FALSE FALSE
## [28,] FALSE FALSE FALSE FALSE FALSE FALSE
## [29,] FALSE FALSE FALSE FALSE FALSE FALSE
## [30,] FALSE FALSE FALSE FALSE FALSE FALSE
## [31,] FALSE FALSE FALSE FALSE FALSE FALSE
## [32,] TRUE FALSE FALSE FALSE FALSE FALSE
## [33,] TRUE FALSE FALSE FALSE FALSE FALSE
## [34,] TRUE FALSE FALSE FALSE FALSE FALSE
## [35,] TRUE FALSE FALSE FALSE FALSE FALSE
## [36,] TRUE FALSE FALSE FALSE FALSE FALSE
## [37,] TRUE FALSE FALSE FALSE FALSE FALSE
## [38,] FALSE FALSE FALSE FALSE FALSE FALSE
## [39,] TRUE FALSE FALSE FALSE FALSE FALSE
## [40,] FALSE FALSE FALSE FALSE FALSE FALSE
## [41,] FALSE FALSE FALSE FALSE FALSE FALSE
## [42,] TRUE FALSE FALSE FALSE FALSE FALSE
## [43,] TRUE FALSE FALSE FALSE FALSE FALSE
## [44,] FALSE FALSE FALSE FALSE FALSE FALSE
## [45,] TRUE FALSE FALSE FALSE FALSE FALSE
## [46,] TRUE FALSE FALSE FALSE FALSE FALSE
## [47,] FALSE FALSE FALSE FALSE FALSE FALSE
## [48,] FALSE FALSE FALSE FALSE FALSE FALSE
## [49,] FALSE FALSE FALSE FALSE FALSE FALSE
## [50,] FALSE FALSE FALSE FALSE FALSE FALSE
## [51,] FALSE FALSE FALSE FALSE FALSE FALSE
## [52,] TRUE FALSE FALSE FALSE FALSE FALSE
## [53,] TRUE FALSE FALSE FALSE FALSE FALSE
## [54,] TRUE FALSE FALSE FALSE FALSE FALSE
## [55,] TRUE FALSE FALSE FALSE FALSE FALSE
## [56,] TRUE FALSE FALSE FALSE FALSE FALSE
## [57,] TRUE FALSE FALSE FALSE FALSE FALSE
## [58,] TRUE FALSE FALSE FALSE FALSE FALSE
## [59,] TRUE FALSE FALSE FALSE FALSE FALSE
## [60,] TRUE FALSE FALSE FALSE FALSE FALSE
## [61,] TRUE FALSE FALSE FALSE FALSE FALSE
## [62,] FALSE FALSE FALSE FALSE FALSE FALSE
## [63,] FALSE FALSE FALSE FALSE FALSE FALSE
## [64,] FALSE FALSE FALSE FALSE FALSE FALSE
## [65,] TRUE FALSE FALSE FALSE FALSE FALSE
## [66,] FALSE FALSE FALSE FALSE FALSE FALSE
## [67,] FALSE FALSE FALSE FALSE FALSE FALSE
## [68,] FALSE FALSE FALSE FALSE FALSE FALSE
## [69,] FALSE FALSE FALSE FALSE FALSE FALSE
## [70,] FALSE FALSE FALSE FALSE FALSE FALSE
## [71,] FALSE FALSE FALSE FALSE FALSE FALSE
## [72,] TRUE FALSE FALSE FALSE FALSE FALSE
## [73,] FALSE FALSE FALSE FALSE FALSE FALSE
## [74,] FALSE FALSE FALSE FALSE FALSE FALSE
## [75,] TRUE FALSE FALSE FALSE FALSE FALSE
## [76,] FALSE FALSE FALSE FALSE FALSE FALSE
## [77,] FALSE FALSE FALSE FALSE FALSE FALSE
## [78,] FALSE FALSE FALSE FALSE FALSE FALSE
## [79,] FALSE FALSE FALSE FALSE FALSE FALSE
## [80,] FALSE FALSE FALSE FALSE FALSE FALSE
## [81,] FALSE FALSE FALSE FALSE FALSE FALSE
## [82,] FALSE FALSE FALSE FALSE FALSE FALSE
## [83,] TRUE FALSE FALSE FALSE FALSE FALSE
## [84,] TRUE FALSE FALSE FALSE FALSE FALSE
## [85,] FALSE FALSE FALSE FALSE FALSE FALSE
## [86,] FALSE FALSE FALSE FALSE FALSE FALSE
## [87,] FALSE FALSE FALSE FALSE FALSE FALSE
## [88,] FALSE FALSE FALSE FALSE FALSE FALSE
## [89,] FALSE FALSE FALSE FALSE FALSE FALSE
## [90,] FALSE FALSE FALSE FALSE FALSE FALSE
## [91,] FALSE FALSE FALSE FALSE FALSE FALSE
## [92,] FALSE FALSE FALSE FALSE FALSE FALSE
## [93,] FALSE FALSE FALSE FALSE FALSE FALSE
## [94,] FALSE FALSE FALSE FALSE FALSE FALSE
## [95,] FALSE FALSE FALSE FALSE FALSE FALSE
## [96,] FALSE TRUE FALSE FALSE FALSE FALSE
## [97,] FALSE TRUE FALSE FALSE FALSE FALSE
## [98,] FALSE TRUE FALSE FALSE FALSE FALSE
## [99,] FALSE FALSE FALSE FALSE FALSE FALSE
## [100,] FALSE FALSE FALSE FALSE FALSE FALSE
## [101,] FALSE FALSE FALSE FALSE FALSE FALSE
## [102,] TRUE FALSE FALSE FALSE FALSE FALSE
## [103,] TRUE FALSE FALSE FALSE FALSE FALSE
## [104,] FALSE FALSE FALSE FALSE FALSE FALSE
## [105,] FALSE FALSE FALSE FALSE FALSE FALSE
## [106,] FALSE FALSE FALSE FALSE FALSE FALSE
## [107,] TRUE FALSE FALSE FALSE FALSE FALSE
## [108,] FALSE FALSE FALSE FALSE FALSE FALSE
## [109,] FALSE FALSE FALSE FALSE FALSE FALSE
## [110,] FALSE FALSE FALSE FALSE FALSE FALSE
## [111,] FALSE FALSE FALSE FALSE FALSE FALSE
## [112,] FALSE FALSE FALSE FALSE FALSE FALSE
## [113,] FALSE FALSE FALSE FALSE FALSE FALSE
## [114,] FALSE FALSE FALSE FALSE FALSE FALSE
## [115,] TRUE FALSE FALSE FALSE FALSE FALSE
## [116,] FALSE FALSE FALSE FALSE FALSE FALSE
## [117,] FALSE FALSE FALSE FALSE FALSE FALSE
## [118,] FALSE FALSE FALSE FALSE FALSE FALSE
## [119,] TRUE FALSE FALSE FALSE FALSE FALSE
## [120,] FALSE FALSE FALSE FALSE FALSE FALSE
## [121,] FALSE FALSE FALSE FALSE FALSE FALSE
## [122,] FALSE FALSE FALSE FALSE FALSE FALSE
## [123,] FALSE FALSE FALSE FALSE FALSE FALSE
## [124,] FALSE FALSE FALSE FALSE FALSE FALSE
## [125,] FALSE FALSE FALSE FALSE FALSE FALSE
## [126,] FALSE FALSE FALSE FALSE FALSE FALSE
## [127,] FALSE FALSE FALSE FALSE FALSE FALSE
## [128,] FALSE FALSE FALSE FALSE FALSE FALSE
## [129,] FALSE FALSE FALSE FALSE FALSE FALSE
## [130,] FALSE FALSE FALSE FALSE FALSE FALSE
## [131,] FALSE FALSE FALSE FALSE FALSE FALSE
## [132,] FALSE FALSE FALSE FALSE FALSE FALSE
## [133,] FALSE FALSE FALSE FALSE FALSE FALSE
## [134,] FALSE FALSE FALSE FALSE FALSE FALSE
## [135,] FALSE FALSE FALSE FALSE FALSE FALSE
## [136,] FALSE FALSE FALSE FALSE FALSE FALSE
## [137,] FALSE FALSE FALSE FALSE FALSE FALSE
## [138,] FALSE FALSE FALSE FALSE FALSE FALSE
## [139,] FALSE FALSE FALSE FALSE FALSE FALSE
## [140,] FALSE FALSE FALSE FALSE FALSE FALSE
## [141,] FALSE FALSE FALSE FALSE FALSE FALSE
## [142,] FALSE FALSE FALSE FALSE FALSE FALSE
## [143,] FALSE FALSE FALSE FALSE FALSE FALSE
## [144,] FALSE FALSE FALSE FALSE FALSE FALSE
## [145,] FALSE FALSE FALSE FALSE FALSE FALSE
## [146,] FALSE FALSE FALSE FALSE FALSE FALSE
## [147,] FALSE FALSE FALSE FALSE FALSE FALSE
## [148,] FALSE FALSE FALSE FALSE FALSE FALSE
## [149,] FALSE FALSE FALSE FALSE FALSE FALSE
## [150,] TRUE FALSE FALSE FALSE FALSE FALSE
## [151,] FALSE FALSE FALSE FALSE FALSE FALSE
## [152,] FALSE FALSE FALSE FALSE FALSE FALSE
## [153,] FALSE FALSE FALSE FALSE FALSE FALSE
#nilai TRUE menunjukkan bahwa terdapat missing value
#menghitung missing value pada variabel Ozone
sum(is.na(airquality$Ozone))
## [1] 37Melihat row yang memiliki missing value
rows_with_na <- airquality[!complete.cases(airquality), ]
print(rows_with_na)
## Ozone Solar.R Wind Temp Month Day
## 5 NA NA 14.3 56 5 5
## 6 28 NA 14.9 66 5 6
## 10 NA 194 8.6 69 5 10
## 11 7 NA 6.9 74 5 11
## 25 NA 66 16.6 57 5 25
## 26 NA 266 14.9 58 5 26
## 27 NA NA 8.0 57 5 27
## 32 NA 286 8.6 78 6 1
## 33 NA 287 9.7 74 6 2
## 34 NA 242 16.1 67 6 3
## 35 NA 186 9.2 84 6 4
## 36 NA 220 8.6 85 6 5
## 37 NA 264 14.3 79 6 6
## 39 NA 273 6.9 87 6 8
## 42 NA 259 10.9 93 6 11
## 43 NA 250 9.2 92 6 12
## 45 NA 332 13.8 80 6 14
## 46 NA 322 11.5 79 6 15
## 52 NA 150 6.3 77 6 21
## 53 NA 59 1.7 76 6 22
## 54 NA 91 4.6 76 6 23
## 55 NA 250 6.3 76 6 24
## 56 NA 135 8.0 75 6 25
## 57 NA 127 8.0 78 6 26
## 58 NA 47 10.3 73 6 27
## 59 NA 98 11.5 80 6 28
## 60 NA 31 14.9 77 6 29
## 61 NA 138 8.0 83 6 30
## 65 NA 101 10.9 84 7 4
## 72 NA 139 8.6 82 7 11
## 75 NA 291 14.9 91 7 14
## 83 NA 258 9.7 81 7 22
## 84 NA 295 11.5 82 7 23
## 96 78 NA 6.9 86 8 4
## 97 35 NA 7.4 85 8 5
## 98 66 NA 4.6 87 8 6
## 102 NA 222 8.6 92 8 10
## 103 NA 137 11.5 86 8 11
## 107 NA 64 11.5 79 8 15
## 115 NA 255 12.6 75 8 23
## 119 NA 153 5.7 88 8 27
## 150 NA 145 13.2 77 9 27Menghapus missing value
airquality_clean <- na.omit(airquality)
head(airquality_clean)
## Ozone Solar.R Wind Temp Month Day
## 1 41 190 7.4 67 5 1
## 2 36 118 8.0 72 5 2
## 3 12 149 12.6 74 5 3
## 4 18 313 11.5 62 5 4
## 7 23 299 8.6 65 5 7
## 8 19 99 13.8 59 5 8Mengganti missing dengan nilai rata-rata
airquality$Ozone[is.na(airquality$Ozone)] <- mean(airquality$Ozone, na.rm = TRUE)
airquality$Solar.R[is.na(airquality$Solar.R)] <- mean(airquality$Solar.R, na.rm = TRUE)
#na.rm = TRUE digunakan agar perhitungan rata-rata pada setiap variabel tidak mengikutsertakan row dengan missing valuePada kasus ini akan dilakukan kategorisasi/pengelompokkan nilai berdasarkan rentang nilai tertentu menjadi kategori tertentu. Pada kasus ini akan digunakan dataset mtcars. Kategorisasi dapat dilakukan dengan beberapa cara berikut
data(mtcars)
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
menggunakan fungsi cut
kategorisasi dilakukan dengan syarat berikut
“Low” for cars with mpg less than or equal to
20
“Medium” for cars with mpg between 20 and
30
“High” for cars with mpg greater than 30
mtcars$mpg_category <- cut(mtcars$mpg,
breaks = c(-Inf, 20, 30, Inf),
labels = c("Low", "Medium", "High"))
head(mtcars[, c("mpg", "mpg_category")])
## mpg mpg_category
## Mazda RX4 21.0 Medium
## Mazda RX4 Wag 21.0 Medium
## Datsun 710 22.8 Medium
## Hornet 4 Drive 21.4 Medium
## Hornet Sportabout 18.7 Low
## Valiant 18.1 Lowmenggunakan fungsi mutate pada libary dplyr
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
mtcars <- mutate(mtcars, mpg_category2 = case_when(mpg <= 20 ~ "Low",mpg > 20 & mpg <= 30 ~ "Medium",mpg > 30 ~ "High"))
head(mtcars[, c("mpg", "mpg_category", "mpg_category2")])
## mpg mpg_category mpg_category2
## Mazda RX4 21.0 Medium Medium
## Mazda RX4 Wag 21.0 Medium Medium
## Datsun 710 22.8 Medium Medium
## Hornet 4 Drive 21.4 Medium Medium
## Hornet Sportabout 18.7 Low Low
## Valiant 18.1 Low Low
#gunakan pipe operator "%>%" untuk mempermudah readability
mtcars <- mtcars %>%
mutate(mpg_category2 = case_when(
mpg <= 20 ~ "Low",
mpg > 20 & mpg <= 30 ~ "Medium",
mpg > 30 ~ "High"
))
head(mtcars[, c("mpg", "mpg_category", "mpg_category2")])
## mpg mpg_category mpg_category2
## Mazda RX4 21.0 Medium Medium
## Mazda RX4 Wag 21.0 Medium Medium
## Datsun 710 22.8 Medium Medium
## Hornet 4 Drive 21.4 Medium Medium
## Hornet Sportabout 18.7 Low Low
## Valiant 18.1 Low LowKnit dilakukan untuk mengubah dokumen R Markdown menjadi beberapa format seperti PDF, HTML, dan lain-lain. Untuk melakukan knit